<?php

require_once($root_path.'modules/rbac/db/dbinterface.php');
//require_once('/var/www/sinapsisvn/modules/rbac/db/dbinterface.php');

require_once("role.php");
require_once("user.php");

class asignation{

    function Insertar_asignacion($nombreUsuario, $nombreRol, $creador){

		$result=NULL;
                $role = new role();
                $user = new user();
                $exist_ro=$role->Seleccionar_rol($nombreRol, $creador);
                $exist_us=$user->Seleccionar_usuario($nombreUsuario, $creador);
                //echo ("recvibi esto ".$nombreUsuario." ".$nombreRol." ".$creador." ");
                if($exist_us && $exist_ro){
                    $dbinterface = new dbinterface();//iniciar conexion con la interfaz de base de datos
                    $dbinterface->connect();
                    $result=$dbinterface->insertar("rbac_asignation",array('id_role' => $exist_ro[0]['id'], 'id_user'=>$exist_us[0]['login_id'], 'status'=>0),$creador);


                }
                else{
                    echo ("caso sin permisos o no existen");
                }

		return $result;

	}

	function Seleccionar_asignacion($nombreUsuario,$nombreRol,$buscador){

		$result=NULL;
                $role = new role();
                $user = new user();
                $exist_ro=$role->Seleccionar_rol($nombreRol, $buscador);
                $exist_us=$user->Seleccionar_usuario($nombreUsuario, $buscador);

                if($exist_us && $exist_ro){
                    $dbinterface = new dbinterface();//iniciar conexion con la interfaz de base de datos
                    $dbinterface->connect();
                    if($nombreUsuario==NULL && $nombreRol==NULL){
                        $result=$dbinterface->seleccionar("rbac_asignation",array('id_role' => NULL, 'id_user'=>NULL),$buscador);
                    }
                    else if($nombreRol==NULL && $nombreUsuario!=NULL)
                        $result=$dbinterface->seleccionar("rbac_asignation",array('id_role' => NULL, 'id_user'=>$exist_us[0]['login_id']),$buscador);
 		    else if($nombreRol!=NULL && $nombreUsuario==NULL)
                        $result=$dbinterface->seleccionar("rbac_asignation",array('id_role' => $exist_ro[0]['id'], 'id_user'=>NULL),$buscador);
                    else
                        $result=$dbinterface->seleccionar("rbac_asignation",array('id_role' => $exist_ro[0]['id'], 'id_user'=>$exist_us[0]['login_id']),$buscador);
		

                    foreach($result as &$perm){
                            $rol=$dbinterface->seleccionar("rbac_role",array('id' => $perm['id_role']),$buscador);
                            $perm['id_role']=$rol[0]['name'];
		
                    }

                }
                else{
                    $return=FALSE;
                }

		return $result;
	}

		function Seleccionar_asignacion1($nombreUsuario,$nombreRol,$buscador){

		$result=NULL;
                $role = new role();
                $user = new user();
                $exist_ro=$role->Seleccionar_rol1($nombreRol, $buscador);
                $exist_us=$user->Seleccionar_usuario1($nombreUsuario, $buscador);

                if($exist_us && $exist_ro){
                    $dbinterface = new dbinterface();//iniciar conexion con la interfaz de base de datos
                    $dbinterface->connect();
                    if($nombreUsuario==NULL && $nombreRol==NULL){
                        $result=$dbinterface->seleccionar1("rbac_asignation",array('id_role' => NULL, 'id_user'=>NULL),$buscador);
                    }
                    else if($nombreRol==NULL && $nombreUsuario!=NULL)
                        $result=$dbinterface->seleccionar1("rbac_asignation",array('id_role' => NULL, 'id_user'=>$exist_us[0]['login_id']),$buscador);
                    else
                        $result=$dbinterface->seleccionar1("rbac_asignation",array('id_role' => $exist_ro[0]['id'], 'id_user'=>$exist_us[0]['login_id']),$buscador);
		

                    foreach($result as &$perm){
                            $rol=$dbinterface->seleccionar1("rbac_role",array('id' => $perm['id_role']),$buscador);
                            $perm['id_role']=$rol[0]['name'];
		
                    }

                }
                else{
                    $return=FALSE;
                }

		return $result;
	}

	function Actualizar_asignacion($nombreRol,$nombreUsuario,$nuevoNombreRol,$nuevonombreUsuario, $nuevoEstado, $modificador){
		//echo("recibi estos valores ".$nombreRol."".$nombreUsuario."".$nuevoEstado."");
                $result=NULL;
		$dbinterface = new dbinterface();//iniciar conexion con lam interfaz de base de datos
		$dbinterface->connect();
                $oldasignation= $this->Seleccionar_asignacion($nombreUsuario, $nombreRol, $modificador);
		///si no tiene permiso
		if ($oldasignation==FALSE)
			return FALSE;
		else{
			//si no existe
			if ($oldasignation==NULL)
			return NULL;
			else{
                                $role = new role();
                                $user = new user();
                                //echo("<br>actualizar</br>");
                                $exist_ro=$role->Seleccionar_rol($nuevoNombreRol, $modificador);
                                $exist_us=$user->Seleccionar_usuario($nuevonombreUsuario, $modificador);
                                $old_ro=$role->Seleccionar_rol($nombreRol, $modificador);
                                $old_us=$user->Seleccionar_usuario($nombreUsuario, $modificador);
                               if ($nuevoNombreRol==NULL && $nuevonombreUsuario==NULL)
                                    $result=$dbinterface->modificar("rbac_asignation", array('id_role'=>$old_ro[0]['id'], 'id_user'=>$old_us[0]['login_id']), array('id_role' => NULL, 'status'=>$nuevoEstado, 'id_user'=>NULL), $modificador);
                                else
                                    $result=$dbinterface->modificar("rbac_asignation", array('id_role'=>$old_ro[0]['id'], 'id_user'=>$old_us[0]['login_id']), array('id_role' => $exist_ro[0]['id'], 'status'=>$nuevoEstado, 'id_user'=>$exist_us[0]['login_id']), $modificador);
                                //echo("<br>actualizar</br>");
			}
		}
		return $result;
	}

	function Eliminar_asignacion($nombreRol,$nombreUsuario,$eliminador){

		//echo ("estos son los recursos y roles que debe buscar ".$nombreRol." ".$nombreUsuario." ".$eliminador."<br>");
                $result=NULL;
		$dbinterface = new dbinterface();//iniciar conexion con lam interfaz de base de datos
		$dbinterface->connect();
                $oldasignation= $this->Seleccionar_asignacion($nombreUsuario, $nombreRol, $eliminador);
		//echo("<br>");
                //print_r($oldasignation);
                //echo("<br>");
                //si no tiene permiso
		if ($oldasignation==FALSE)
			return FALSE;
		else{
			//si no existe
			if ($oldasignation==NULL)
			return NULL;
			else{
				$role = new role();
                                $user = new user();
                                //echo("<br>eliminar</br>");
                                $exist_ro=$role->Seleccionar_rol($nombreRol, $eliminador);
                                $exist_us=$user->Seleccionar_usuario($nombreUsuario, $eliminador);
                                //echo ("estos son los recursos y roles encontrados ".$exist_ro[0]['id']." ".$exist_us[0]['login_id']."");
                                //echo ("estos son los recursos y roles del permiso ".$oldasignation[0]['id_role']." ".$oldasignation[0]['id_user']."");

				$result=$dbinterface->eliminar("rbac_asignation", array('id_role'=>$exist_ro[0]['id'], 'id_user'=>$oldasignation[0]['id_user']), $eliminador);
                                //echo("<br>eliminar</br>");
			}
		}

		return $result;
	}



}
?>
